package fr.umlv.parser;

import java.io.File;
import java.io.IOException;
import java.util.ArrayList;
import java.util.List;

import org.jdom2.Attribute;
import org.jdom2.DataConversionException;
import org.jdom2.Document;
import org.jdom2.Element;
import org.jdom2.JDOMException;
import org.jdom2.input.SAXBuilder;

import fr.umlv.graph.Edge;

public class XMLParser {

	private final SAXBuilder sb;
	private final Element root;
	private Document document;
	
	public XMLParser(String fileName){
		this.sb = new SAXBuilder();
		try {
			this.document = sb.build(new File(fileName));
		} catch (JDOMException e) {
			System.err.println("Erreur lors de l'ouverture du fichier avec le parseur");
		} catch (IOException e) {
			System.err.println("Erreur lors de l'ouverture du fichier");
		}
		this.root = document.getRootElement();
	}
	
	public int getSize(){
		
		Element size = root.getChild("size");
		
		return Integer.parseInt(size.getText());
	}
	
	public List<Edge> getEdges(){
		
		List<Edge> edges = new ArrayList<>();
		
		for (Element child : root.getChildren()){
			if (child.getName().equals("edge")){
				Attribute start = child.getAttribute("start");
				Attribute end = child.getAttribute("end");
				try {
					edges.add(new Edge(start.getIntValue(), end.getIntValue()));
				} catch (DataConversionException e) {
					System.err.println("Erreur de cast lors de la récupération des données");
				}
			}
		}
		
		
		return edges;
	}
	
}
